8.8 concat表格纵向拼接(多表极简合并)
如果要执行多表格的纵向拼接,不但可以使用df.append()函数,还可以使用pd.concat()函数,该函数不但可以做纵向拼接,还可以做横向拼接,结构如下:
pd.concat(objs,axis=0,join=’outer’,ignore_index=False,keys=None,levels=None,names=None,Verify_integrity=False,copy=True)
objs :提供要拼接的多个Series或者多个DataFrame。存储在列表、元组、字典对象中;
axis :设置拼接方向,0为纵向拼接,1为横向拼接,默认为0
join :横向拼接时,以行索引为拼接依据,inner为内联接方式,outer为外联接方式,
ignore_index :是否重新编号
keys :添加索引标签名称
levels :用于构造分层索引的特定层级(唯一值)
names :分层索引标题
import pandas as pd
cg=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","采购部")
cw=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","财务部")
sc=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","生产部")
print (cg)
print (cw)
print (sc)
df=pd.concat(objs=[cg,cw,sc],
keys=[ "采购部","财务部","生产部" ],
names=[ "部门","序号" ]).reset_index(level=[ 0,1 ])
print (df)
返回:
姓名 | 工资 | |
---|---|---|
0 | 张三 | 111 |
1 | 李四 | 222 |
2 | 王麻子 | 333 |
姓名 | 工资 | |
---|---|---|
0 | 小韦 | 888 |
1 | 小李 | 777 |
2 | 小余 | 666 |
姓名 | 工资 | |
---|---|---|
0 | 小许 | 333 |
1 | 小郭 | 444 |
2 | 小张 | 555 |
部门 | 序号 | 姓名 | 工资 | |
---|---|---|---|---|
0 | 采购部 | 0 | 张三 | 111 |
1 | 采购部 | 1 | 李四 | 222 |
2 | 采购部 | 2 | 王麻子 | 333 |
3 | 财务部 | 0 | 小韦 | 888 |
4 | 财务部 | 1 | 小李 | 777 |
5 | 财务部 | 2 | 小余 | 666 |
6 | 生产部 | 0 | 小许 | 333 |
7 | 生产部 | 1 | 小郭 | 444 |
8 | 生产部 | 2 | 小张 | 555 |
可以合并objs和keys,结果是一样的。
import pandas as pd
cg=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","采购部")
cw=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","财务部")
sc=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx","生产部")
print (cg)
print (cw)
print (sc)
df=pd.concat(objs={ "采购部" :cg, "财务部" :cw, "生产部" :sc},
names=[ "部门","序号" ]).reset_index(level=[ 0,1 ])
print (df)